package com.party.core.service.member;

import com.party.core.model.member.PackageCount;
import com.party.core.model.notify.TargetTemplate;
import com.party.core.service.IBaseService;

/**
 * @author： yifeng
 * @description： 套餐使用控制
 * @date：Created in  2017/12/05 下午 17:04
 **/
public interface IPackageCountService extends IBaseService<PackageCount> {
    PackageCount getUnique(PackageCount packageCount);

    /**
     * 更新使用数字
     *
     * @param orgId 机构id
     * @param type  类型
     */
    void updateUseCount(String orgId, String type);


    PackageCount getByMemberId(String memberId);

    /**
     * 检查机构的剩余数量
     *
     * @param memberId 机构id
     * @param type     类型
     * @return
     */
    Integer checkSpareNum(String memberId, String type);

    /**
     * 主动推送时检查数量是否足够
     *
     * @param targetTemplate 实际数量
     * @param targetSize     目标发送数量
     * @return
     */
    boolean checkSpareNum(TargetTemplate targetTemplate, Integer targetSize);

    /**
     * 获取可用数量
     *
     * @param totalNum 总数
     * @param useNum   已使用数量
     * @return
     */
    Integer getSpareNum(Integer totalNum, Integer useNum);

    /**
     * 更新预警字段
     *
     * @param packageCount
     */
    void updateWarn(PackageCount packageCount);
}
